home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2001 May / SGI Freeware 2001 May - Disc 1.iso / dist / fw_qt.idb / usr / freeware / include / qobject.h.z / qobject.h
Encoding:
C/C++ Source or Header  |  2001-04-12  |  7.3 KB  |  248 lines

  1. /****************************************************************************
  2. ** $Id: qt/src/kernel/qobject.h   2.3.0   edited 2001-01-26 $
  3. **
  4. ** Definition of QObject class
  5. **
  6. ** Created : 930418
  7. **
  8. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  9. **
  10. ** This file is part of the kernel module of the Qt GUI Toolkit.
  11. **
  12. ** This file may be distributed under the terms of the Q Public License
  13. ** as defined by Trolltech AS of Norway and appearing in the file
  14. ** LICENSE.QPL included in the packaging of this file.
  15. **
  16. ** This file may be distributed and/or modified under the terms of the
  17. ** GNU General Public License version 2 as published by the Free Software
  18. ** Foundation and appearing in the file LICENSE.GPL included in the
  19. ** packaging of this file.
  20. **
  21. ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
  22. ** licenses may use this file in accordance with the Qt Commercial License
  23. ** Agreement provided with the Software.
  24. **
  25. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  26. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  27. **
  28. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  29. **   information about Qt Commercial License Agreements.
  30. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  31. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  32. **
  33. ** Contact info@trolltech.com if any conditions of this licensing are
  34. ** not clear to you.
  35. **
  36. **********************************************************************/
  37.  
  38. #ifndef QOBJECT_H
  39. #define QOBJECT_H
  40.  
  41. #ifndef QT_H
  42. #include "qobjectdefs.h"
  43. #include "qwindowdefs.h"
  44. #include "qstring.h"
  45. #include "qevent.h"
  46. #include "qnamespace.h"
  47. #include "qstringlist.h" // obsolete
  48. #endif // QT_H
  49.  
  50. #define QT_TR_NOOP(x) (x)
  51. #define QT_TRANSLATE_NOOP(scope,x) (x)
  52.  
  53. class QMetaObject;
  54. class QVariant;
  55.  
  56. #ifndef QT_MOC_CPP
  57.  
  58. class Q_EXPORT QObject: public Qt
  59. {
  60.     Q_PROPERTY( QCString name READ name WRITE setName )
  61.  
  62. public:
  63.     QObject( QObject *parent=0, const char *name=0 );
  64.     virtual ~QObject();
  65.  
  66.     static QString tr( const char * );
  67.     static QString tr( const char *, const char * );
  68.  
  69.     virtual bool event( QEvent * );
  70.     virtual bool eventFilter( QObject *, QEvent * );
  71.  
  72.     virtual QMetaObject *metaObject() const { return staticMetaObject(); }
  73.     virtual const char    *className()  const;
  74.  
  75.     bool     isA( const char * )     const;
  76.     bool     inherits( const char * ) const;
  77.  
  78.     const char  *name() const;
  79.     const char  *name( const char * defaultName ) const;
  80.  
  81.     virtual void setName( const char *name );
  82.     bool     isWidgetType()      const { return isWidget; }
  83.     bool     highPriority()      const { return FALSE; }
  84.  
  85.     bool     signalsBlocked()  const { return blockSig; }
  86.     void     blockSignals( bool b );
  87.  
  88.     int         startTimer( int interval );
  89.     void     killTimer( int id );
  90.     void     killTimers();
  91.  
  92.     QObject           *child( const char *name, const char *type = 0 );
  93.     const QObjectList *children() const { return childObjects; }
  94.  
  95.     static const QObjectList *objectTrees();
  96.  
  97.     //### make queryList const in 3.0
  98.     QObjectList          *queryList( const char *inheritsClass = 0,
  99.                   const char *objName = 0,
  100.                   bool regexpMatch = TRUE,
  101.                   bool recursiveSearch = TRUE );
  102.  
  103.     virtual void insertChild( QObject * );
  104.     virtual void removeChild( QObject * );
  105.  
  106.     void     installEventFilter( const QObject * );
  107.     void     removeEventFilter( const QObject * );
  108.  
  109.     static bool  connect( const QObject *sender, const char *signal,
  110.               const QObject *receiver, const char *member );
  111.     bool     connect( const QObject *sender, const char *signal,
  112.               const char *member ) const;
  113.     static bool  disconnect( const QObject *sender, const char *signal,
  114.                  const QObject *receiver, const char *member );
  115.     bool     disconnect( const char *signal=0,
  116.                  const QObject *receiver=0, const char *member=0 );
  117.     bool     disconnect( const QObject *receiver, const char *member=0 );
  118.  
  119.     void     dumpObjectTree();
  120.     void     dumpObjectInfo();
  121.  
  122. #ifndef QT_NO_PROPERTIES
  123.     bool setProperty( const char *name, const QVariant& value ); // virtual in Qt 3.0
  124.     QVariant property( const char *name ) const;    // virtual in Qt 3.0
  125. #endif // QT_NO_PROPERTIES
  126.  
  127. signals:
  128.     void     destroyed();
  129.  
  130. public:
  131.     QObject    *parent() const { return parentObj; }
  132.  
  133. private slots:
  134.     void     cleanupEventFilter();
  135.  
  136. protected:
  137.     bool     activate_filters( QEvent * );
  138.     QConnectionList *receivers( const char *signal ) const;
  139.     void     activate_signal( const char *signal );
  140.     void     activate_signal( const char *signal, short );
  141.     void     activate_signal( const char *signal, int );
  142.     void     activate_signal( const char *signal, long );
  143.     void     activate_signal( const char *signal, const char * );
  144.     void     activate_signal_bool( const char *signal, bool );
  145.     void     activate_signal_string( const char *signal, QString );
  146.     void     activate_signal_strref( const char *signal, const QString & );
  147.  
  148.     const QObject *sender();
  149.  
  150.  
  151.     virtual void initMetaObject();
  152.     static QMetaObject* staticMetaObject();
  153.  
  154.     virtual void timerEvent( QTimerEvent * );
  155.     virtual void childEvent( QChildEvent * );
  156.  
  157.     virtual void connectNotify( const char *signal );
  158.     virtual void disconnectNotify( const char *signal );
  159.     virtual bool checkConnectArgs( const char *signal, const QObject *receiver,
  160.                    const char *member );
  161.     static QCString normalizeSignalSlot( const char *signalSlot );
  162.  
  163.     static  void badSuperclassWarning( const char *className,
  164.                        const char *superclassName );
  165.  
  166. private:
  167.     uint    isSignal   : 1;
  168.     uint    isWidget   : 1;
  169.     uint    pendTimer  : 1;
  170.     uint    pendEvent  : 1;
  171.     uint    blockSig   : 1;
  172.     uint    wasDeleted : 1;
  173.     uint    isTree : 1;
  174.  
  175.     QMetaObject *queryMetaObject() const;
  176.     static QMetaObject *metaObj;
  177.     const char    *objname;
  178.     QObject    *parentObj;
  179.     QObjectList *childObjects;
  180.     QSignalDict *connections;
  181.     QObjectList *senderObjects;
  182.     QObjectList *eventFilters;
  183.     // ### 3.0 todo: add d pointer
  184.  
  185.     QObject    *sigSender;
  186.  
  187.     friend class QApplication;
  188.     friend class QBaseApplication;
  189.     friend class QWidget;
  190.     friend class QSignal;
  191.     friend class QSenderObject;
  192.  
  193. private:    // Disabled copy constructor and operator=
  194. #if defined(Q_DISABLE_COPY)
  195.     QObject( const QObject & );
  196.     QObject &operator=( const QObject & );
  197. #endif
  198.  
  199. public:
  200.     // obsolete
  201. #ifndef QT_NO_STRINGLIST
  202.     QStringList  superClasses( bool includeThis = FALSE ) const; // obsolete, remove 3.0
  203. #endif
  204. };
  205.  
  206. #endif
  207.  
  208. inline bool QObject::connect( const QObject *sender, const char *signal,
  209.                   const char *member ) const
  210. {
  211.     return connect( sender, signal, this, member );
  212. }
  213.  
  214. inline bool QObject::disconnect( const char *signal,
  215.                  const QObject *receiver, const char *member )
  216. {
  217.     return disconnect( this, signal, receiver, member );
  218. }
  219.  
  220. inline bool QObject::disconnect( const QObject *receiver, const char *member )
  221. {
  222.     return disconnect( this, 0, receiver, member );
  223. }
  224.  
  225. inline const QObject *QObject::sender()
  226. {
  227.     return sigSender;
  228. }
  229.  
  230.  
  231. class Q_EXPORT QSenderObject : public QObject        // object for sending signals
  232. {
  233. public:
  234.     void setSender( QObject *s ) { sigSender=s; }
  235. };
  236.  
  237. #ifdef QT_NO_TRANSLATION
  238. inline QString QObject::tr( const char *s ) {
  239.     return QString::fromLatin1( s );
  240. }
  241. inline QString QObject::tr( const char *s, const char * ) {
  242.     return QString::fromLatin1( s );
  243. }
  244. #endif
  245.  
  246.  
  247. #endif // QOBJECT_H
  248.